Modification of a three-dimensional (3D) object data model based on a comparison of images and statistical information

ABSTRACT

System and methods for rendering three-dimensional (3D) object data models based on a comparison of images. A 3D object data model of an object can be characterized by parameters defining rendering features of the 3D object data model. A comparison can be made of a first rendering of the 3D object data model to one or more reference images related to the object and, based on the comparison, the parameters of the 3D object data model can be modified. Following the modification, the 3D object data model can be rendered to generate a second rendering. Based on the second rendered 3D object data model, statistical information can be obtained and based on the statistical information, the parameters of the 3D object data model can be modified again to further adjust the appearance of the second rendering of the 3D object data model.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present non-provisional utility application claims priority under 35U.S.C. §119(e) to provisional application No. U.S. 61/716,074 filed onOct. 19, 2012, the entire contents of which are herein incorporated byreference.

FIELD

The present disclosure relates to three-dimensional (3D) object datamodel rendering, and for example, to methods for modifying a 3D objectdata model.

BACKGROUND

In computer graphics, three-dimensional (3D) modeling involvesgeneration of a representation of a 3D surface of an object, and therepresentation may be referred to as a 3D object data model. A 3D objectdata model can be rendered or displayed as a two-dimensional (2D) imagevia 3D rendering or displayed as a 3D image. 3D object data modelsrepresent a 3D object using a collection of points in 3D space,connected by various geometric entities such as triangles, lines, curvedsurfaces, etc. Various techniques exist for generating 3D object datamodels utilizing point clouds and geometric shapes, for examples. 3Drendering is the 3D computer graphics process of automaticallyconverting 3D object data models into 2D images with 3D photorealisticeffects on a computer. The 3D rendering process depicts the 3D objectdata model as a picture taken from a specified location and perspective.Several different, and often specialized, rendering methods have beendeveloped such as scan-line rendering or ray-tracing, for examples.

Being a collection of data, 3D models can be created by hand,algorithmically, or objects can be scanned, for example. As an example,a given object may be scanned from a number of different angles, and thescanned images can be combined to generate the 3D image of the object.3D object data models may include solid models that define a volume ofthe object, or may include shell or boundary models that represent asurface (e.g. the boundary) of the object. Because an appearance of anobject depends largely on an exterior of the object, boundaryrepresentations are common in computer graphics.

SUMMARY

In one example, a method is provided that includes receiving by aprocessor a three-dimensional (3D) object data model of an object. The3D object data model of the object is characterized by parametersdefining rendering features for data points of the 3D object data model.The method also includes making a comparison of a first rendering of the3D Object data model to one or more reference images related to theobject. The method includes based on the comparison, modifying one ormore of the parameters of the 3D object data model based on an attributeof content in the one or more reference images so as to adjust anappearance of a second rendering of the 3D object data model. The methodalso includes rendering the 3D object data model based on the modifiedone or more parameters so as to generate the second rendering. Themethod includes receiving statistical information associated with thesecond rendering of the 3D object data model. The statisticalinformation is based on feedback associated with an observation of thesecond rendering of the 3D object data model. The method also includesbased on the statistical information, modifying one or more of theparameters of the 3D object data model to further adjust the appearanceof the second rendering of the 3D object data model.

In another example, a system is provided that includes a non-transitorycomputer-readable medium and program instructions stored on thenon-transitory computer-readable medium executable by a computing deviceto perform the functions of receiving a three-dimensional (3D) dataobject model of an object. The 3D object data model of the object ischaracterized by parameters defining rendering features for data pointsof the 3D object data model. The functions include making a comparisonof a first rendering of the 3D object data model to one or morereference images related to the object. The functions also include basedon the comparison, modifying one or more of the parameters of the 3Dobject data model based on an attribute of content in the one or morereference images so as to adjust an appearance of a second rendering ofthe 3D object data model. The functions include rendering the 3D objectdata model based on the modified one or more parameters so as togenerate the second rendering. The functions include receivingstatistical information associated with the second rendering of the 3Dobject data model. The statistical information is based on feedbackassociated with an observation of the second rendering of the 3D objectdata model. The functions also include based on the statisticalinformation, modifying one or more of the parameters of the 3D objectdata model to further adjust the appearance of the second rendering ofthe 3D object data model.

In another example, a non-transitory computer readable medium havingstored therein program instructions executable by a computing device tocause the computing device to perform functions that include receiving athree-dimensional (3D) object data model of an object is provided. The3D object data model of the object is characterized by parametersdefining rendering features for data points of the 3D object data model.The functions also include making a comparison of a first rendering ofthe 3D object data model to one or more reference images related to theobject. The fi actions include based on the comparison, modifying one ormore of the parameters of the 3D object data model based on an attributeof content in the one or more reference images so as to adjust anappearance of a second rendering of the 3D object data model. Thefunctions also include rendering the 3D object data model based on themodified one or more parameters so as to generate the second rendering.The functions include receiving statistical information associated withthe second rendering of the 3D object data model. The statisticalinformation is based on feedback associated with an observation of thesecond, rendering of the 3D object data model. The functions alsoinclude based on the statistical information, modifying one or more ofthe parameters of the 3D object data model to further adjust theappearance of the second rendering of the 3D object data model.

The foregoing summary is illustrative only and is not intended to be inany way limiting. In addition to the illustrative aspects, embodiments,and features described above, further aspects, embodiments, and featureswill become apparent by reference to the figures and the followingdetailed description.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a diagram illustrating an example system for renderingthree-dimensional (3D) object data models based on a comparison ofimages, in accordance with embodiments described herein.

FIG. 2 is a block diagram of an example method for rendering 3D objectdata models based on a comparison of images, in accordance withembodiments described herein.

FIGS. 3A-3D conceptually illustrate examples of rendering a 3D objectdata model based on a comparison of images, in accordance withembodiments described herein.

FIG. 4 is a functional block diagram illustrating an example computingdevice used in a computing system, in accordance with embodimentsdescribed herein.

FIG. 5 is a schematic illustrating a conceptual partial view of anexample computer program product that includes a computer program forexecuting a computer process on a computing device, in accordance withembodiments described herein

DETAILED DESCRIPTION

The following detailed description includes references to theaccompanying figures. In the figures, similar symbols typically identifysimilar components, unless context dictates otherwise. The exampleembodiments described in the detailed description, figures, and claimsare not meant to be limiting. Other embodiments may be utilized, andother changes may be made, without departing from the scope of thesubject matter presented herein. It will be readily understood that theaspects of the present disclosure, as generally described herein andillustrated in the figures can be arranged, substituted, combined,separated, and designed in a wide variety of different configurations,all of which are contemplated herein.

This disclosure may disclose, inter alia, methods and systems forrendering three-dimensional (3D) object data models based on acomparison of images. A 3D object data model of an object can becharacterized by parameters defining rendering features of the 3D objectdata model. A comparison can be made to one or more reference imagesrelated to the object and, based on the comparison, the parameters ofthe 3D object data model can be modified. Following the modification,the 3D object data model can be rendered. Based on the rendered 3Dobject data model, statistical information can be obtained and based onthe statistical information, parameters of the 3D object data model canbe modified again to further adjust the appearance of the rendering ofthe 3D object data model.

Referring now to the figures, FIG. 1 illustrates an example system 100for rendering 3D object data models based on a comparison of images. Thesystem 100 includes an input source 102 coupled to a server 104 and adatabase 106. The server 104 is also shown coupled to the database 106and an output target 108. The system 100 may include more or fewercomponents, and each of the input source 102, the server 104, thedatabase 106, and the output target 108 may comprise multiple elementsas well, or each of the input source 102, the server 104, the database106, and the output target 108 may be interconnected as well. Thus, oneor more of the described functions of the system 100 may be divided upinto additional functional or physical components, or combined intofewer functional or physical components. In some further examples,additional functional and/or physical components may be added to theexamples illustrated by FIG. 1.

Components of the system 100 may be coupled to or configured to becapable of communicating via a network (not shown), such as a local areanetwork (LAN), wide area network (WAN), wireless network (Wi-Fi), orInternet, for example. In addition, any of the components of the system100 may be coupled to each other using wired or wireless communications.For example, communication links between the input source 102 and theserver 104 may include wired connections, such as a serial or parallelbus, or wireless links, such as Bluetooth, IEEE 802.11 (IEEE 802.11 mayrefer to IEEE 802.11-2007, IEEE 802.11n-2009, or any other IEEE 802.11revision), or other wireless based communication links.

The input source 102 may be any source from which a 3D object data modelof an object may be received. In some examples, 3D object data modelacquisition (shape and appearance) may be achieved by working withvenders or manufacturers to scan objects in 3D. For instance, structuredlight scanners may capture images of an object and a shape of the objectmay be recovered using monochrome stereo cameras and a patternprojector. In other examples, a high-resolution digital single-lensreflex (DSLR) camera may be used to capture images for color textureinformation. In still other examples, a raw computer-aided drafting(CAD) set of drawings may be received for each object. Thus, the inputsource 102 may provide a 3D object data model, in various forms to theserver 104. As one example, multiple scans of the object may beprocessed into a merged mesh data model, and provided to the server 104in that form.

The input source 102 may also be any source from which reference imagesof the object and statistical information associated with a rendering ofthe 3D object data model may be received. In some examples, thereference images may be captured with high-resolution DSLR cameras withdifferent lighting conditions from different angles. In other examples,the reference images may also be exported from digital image editingapplications. In still other examples, the reference images may bedownloaded from image libraries or the Internet. In other examples,statistical information may be captured from a device used to displaythe rendered 3D object data model. As one example, informationindicative of a number of selections of the displayed rendered 3D objectdata model may be received by the input source 102 and provided to theserver 104. Thus, the input source 102 may provide reference images ofthe object and statistical information associated with a rendering ofthe 3D object data model, in various forms, to the server 104.

The server 104 includes an object data model processor 110, a referenceimage index 112, and a graphics library 114. Any of the components ofthe server 104 may be coupled to each other. In addition, any componentsof the server 104 may alternatively be a separate component coupled tothe server 104. The server 104 may further include a processor andmemory including instructions executable by the processor to performfunctions of the components of the server 104, for example.

The object data model processor 110 receives the mesh data model foreach object from the input source 102, which may include, for example, adata set defining a surface mesh geometry, and may generate a model ofthe object in 3D. For example, the object data model processor 110 mayperform coherent texture unwrapping from the mesh surface, and determinetextures of surfaces emulated from the geometry. In a further example,the object data model processor 110 may receive a previously generated3D object data model.

The reference image index 112 may receive captured images or processedimages that represent or are related to the object on which the 3Dobject data model is based. For example, for each 3D object data model,the reference image index 112 may receive one or multiple images withvarying attributes and may index or label components in the images(e.g., per pixel) as having a certain attributes (i.e., texture, color,shape, lighting, etc.) for the corresponding 3D object data model.

The graphics library 114 may include a WebGL or OpenGL mesh compressionto reduce a mesh file size, for example. In other examples, the graphicslibrary 114 may include an Adobe Stage3D or Microsoft Direct3D meshcompression. The graphics library 114 may provide the 3D object datamodel in a form for display on a browser, for example. In some examples,a 3D object data model viewer may be used to display images of the 3Dobject data models. The 3D object data model viewer may be implementedusing WebGL within a web browser, or OpenGL, for example.

The database 106 may store all data sets for a 3D object data model inany number of various forms from raw data captured to processed data fordisplay. For example, the database 106 may store rendered images of the3D object data model (shown in FIG. 3C).

The output target 108 may include a number of different targets, such asa webpage on the Internet, a search engine, a database, etc. The outputtarget 108 may include a 3D object data model viewer that enablesproduct advertisements or product searches based on the 3D object datamodel. In a further example, the output target 108 may include an HTMLwebpage that displays multiple rendered images of the 3D object datamodel in the form of advertisements. In operation, for example, theoutput target 108 may receive from the database 106 the rendered imagesof the 3D object data model for display on a webpage.

In examples herein, the system 100 may be used to acquire data of anobject, process the data to generate a 3D object data model, compare the3D object data model to multiple images related to the object, modifythe data of the 3D object based on the comparison to the multiple imagesand, based on the modifications, render the 3D object data model fordisplay. Based on the rendered 3D object data model, statisticalinformation can be obtained and, based on the statistical information,the 3D object data model's parameters can be modified again to furtheradjust the appearance of the rendering of the 3D object data model.

FIG. 2 is a block diagram of an example method for rendering a 3D objectdata model based on a comparison of images. Method 200 shown in FIG. 2presents an embodiment of a method that, for example, could be used withthe system 100, and may be performed by a device, such as any componentsillustrated in FIG. 1. Method 200 may include one or more operations,functions, or actions as illustrated by one or more of blocks 202-212.Although the blocks are illustrated in a sequential order, these blocksmay also be performed in parallel, and/or in a different order thanthose described herein. Also, the various blocks may be combined intofewer blocks, divided into additional blocks, and/or removed based uponthe desired implementation.

In addition, for the method 200 and other processes and methodsdisclosed herein, the flowchart shows functionality and operation of onepossible implementation of present embodiments. In this regard, eachblock may represent a module, a segment, or a portion of program code,which includes one or more instructions executable by a processor orcomputing device for implementing specific logical functions or steps inthe process. The program code may be stored on any type of computerreadable medium or memory, for example, such as a storage deviceincluding a disk or hard drive. The computer readable medium may includenon-transitory computer readable medium, for example, such ascomputer-readable media that stores data for short periods of time likeregister memory, processor cache and Random Access Memory (RAM). Thecomputer readable medium may also include non-transitory media, such assecondary or persistent long term storage, like read only memory (ROM),optical or magnetic disks, compact-disc read only memory (CD-ROM), forexample. The computer readable media may also be any other volatile ornon-volatile storage systems. The computer readable medium may beconsidered a computer readable storage medium, for example, or atangible storage device.

In addition, for the method 200 and other processes and methodsdisclosed herein, each block in FIG. 2 may represent circuitry that iswired to perform the specific logical functions in the process.

At block 202, the method 200 includes receiving a 3D object data modelof an object. A server or other computing device may receive the 3Dobject data model of the object from a number of sources, such as inputby a user, from another server, or database, for example.

The 3D object data model may be characterized by parameters definingrendering features for data points of the 3D object data model. Theparameters defining rendering features may include a material attribute,shading, lighting, color, texture, or background. As an example, a usermay manually define all of the parameters of a 3D object data model of asmartphone (e.g., the material, lighting, color of the paint, etc.). The3D object data model may be characterized by parameters definingrendering features for data points of the 3D object data model. In otherexamples, the 3D object data model may be obtained from available datalibraries and previously defined parameters may be associated with the3D object data model.

At block 204, the method 200 includes making a comparison of a firstrendering of the 3D object data model to one or more reference imagesrelated to the object. The server 104 may receive one or more imagesrelated to the object from a number of sources such as input by a user,from another server, or database. The reference images may depict theobject in a number of different manners with varying attributes (e.g.,shown in FIG. 3B). Continuing with the example of a smartphone,introduced above, a picture of the smartphone with an attribute of a dimlit environment may be downloaded from a database. In another example,the reference images may comprise product photos that depict the 3Dobject data in manners a buyer finds appealing. In a further example, auser may digitally edit a picture of the smartphone with an attribute ofan enhanced screen. Based on these multiple reference images acomparison can be made between a second rendering of the 3D object datamodel and the reference images by the object data model processor 110,for example.

At block 206, the method 200 includes modifying one or more of theparameters of the 3D object data model based on an attribute of contentin one or more of the reference images so as to adjust an appearance ofa second rendering of the 3D object data model. In other words, theparameter of the 3D object data model may be changed knowing that the 3Dobject data model will be rendered again to incorporate the changes. Anattribute of content may include, for example, a given appearance of agiven object in the one or more reference images, or an actualappearance of the object in an environment. Based on the comparison ofthe 3D object data model to the one or more reference images, at block204, the 3D object data model can be modified accordingly such that theappearance of the second rendering of the 3D object data model reflectsan actual appearance of the object in an environment. For instance, the3D data model of the smartphone can be changed to alter the rendering ofthe smartphone to depict the enhanced screen attribute. Many methods andtechniques exist for modification of 3D data models. For example, a usermay manually modify a lighting parameter (e.g., shown in FIG. 3A) of the3D object data model. In further examples, modification of one or moreof the parameters of the 3D object data model can happen by rendering animage of the 3D object data model based on guessed or conjecturedparameters and thereafter comparing pixel values of the rendered imageand the chosen reference image. For example, the server 104 may receivemodified parameters of the 3D object data model that represent what theuser believes is an accurate reflection, when rendered, of a referenceimage in the reference image index 112. Thereafter, the object datamodel processor 110 may execute instructions to compare pixel values ofthe rendered 3D object data model and the reference image. Based on thiscomparison, the parameters of the 3D object data model can be modifiedto eradicate any differences. In one example, the object data modelprocessor 110 executes program instructions to modify the 3D object datato eradicate the differences.

Once one or more of the parameters has been modified, the 3D object datamodel can be rendered so as to generate the second rendering. At block208, the method 200 includes rendering the 3D object data model based onthe modified parameters so as to generate the second rendering. Manydifferent and specialized rendering algorithms have been developed suchas scan-line rendering or ray-tracing, for example. Ray tracing is amethod to produce realistic images by determining visible surfaces in animage at the pixel level. The ray tracing algorithm generates an imageby tracing the path of light through pixels in an image plane andsimulating the effects of its encounters with virtual objects. Scan-linerendering generates images on a row-by-row basis rather than apixel-by-pixel basis. All of the polygons representing the 3D objectdata model are sorted, and then the image is computed using theintersection of a scan line with the polygons as the scan line isadvanced down the picture. In one example, the object data modelprocessor 110 may execute instructions to run an application thatperforms the scan-line rendering algorithm on the 3D object data model.Once the 3D object data model has been rendered, the 3D object model maythen be stored in the database 106 and displayed at the output target108. In some examples, the rendered 3D object data model may be renderedin an electronic document. In other examples, a plurality of renderingsof the 3D object data model may be provided to the database 106. Anyrendering algorithm may be used by the processor 110 to render the 3Ddata object model.

At block 210, the method 200 includes receive statistical informationassociated with the second rendering of the 3D object data model. Withinthe context of this disclosure, statistical information may include anyinformation indicative of satisfaction or dissatisfaction of therendering of the 3D object data model. For example, a user may bepresented with a rendering of the 3D object data model (e.g., shown inFIG. 3C) at the output target 108, in the form of an electronic documentin a HTML webpage and queried whether the rendering is satisfactory. Auser can indicate satisfaction, for example, with a mouse click action.Based on such user activity statistical information can be developed.For example, the number of mouse click actions can be determined andsent to the server 104. In one example, the user may receive a secondrendering and the original reference images or other desired referencephotography. The user may then select the preferable image. In a furtherexample, a user may receive multiple renderings for display on anelectronic device, which are juxtaposed to one another, and thereafterselect one, preferable rendering of the multiple renderings of the 3Dobject data model sending this information to the server 104.

In another example, a user may be presented with a rendering of the 3Dobject data model at the output target 108 without being queried whetherthe rendering is satisfactory. Statistical information can still beobtained. For example, a user may view the HTML webpage at the outputtarget 108 depicting a preferable rendering of the 3D object data modelfor a period of time that is longer than the user views a HTML webpagedepicting a non-preferable rendered 3D object data model. In anotherexample, the user may be presented with a HTML hyperlink at the outputtarget 108 depicting a rendering of the 3D object data model and mayselect the hyperlink to purchase the object depicted in the rendering.Based on such user activity statistical information can be developed.All of this statistical information can be obtained by the input source102 and sent to the server 104.

In a further example, statistical information that describes differencesbetween the rendering of the 3D object data model and the referenceimages may be obtained. For example, a user may be presented with aparticular rendering and the original reference image and/or any otherdesired reference image. When the user selects a particular image fromthe group of images (including the rendered 3D object data model),statistical information may be obtained that describes differencesbetween the chosen image and the other images. Such statisticalinformation may include, for example, a number of different pixels, anumber of pixels with a different color or different shading, adifference in the size of a figure depicted in the renderings, adifference in a background depicted in the renderings, or a differencein the shape of a figure depicted in the renderings. Other statisticalinformation that describes differences may be determined. In otherexamples, the statistical information may include rendering angles atwhich the rendered 3D object data model has greater or lesserdifferences based on one or more of the aforementioned variables.

At block 212, the method 200 includes modifying one or more of theparameters of the 3D object data model based on the statisticalinformation to further adjust the appearance of the second rendering. Todo so, may include adjusting the appearance of the second rendering ofthe 3D object data model to illustrate edits that modify an actualappearance of the object in an environment. For example, if a userrepetitively ignores the smartphone in white (shown in FIG. 3C), e.g.,does not click the rendering in white sixty percent of the time, thenthe parameters of the 3D object data model representing the smartphonemay be modified to apply a different color to the smartphone. In otherexamples, parameters of the 3D object data model may be changed to:cause certain pixels to change color, cause the texture of the 3D objectmodel to change, adjust the geometry of the 3D object model, adjust thematerial of a point or patch on the 3D object model, or alter or tweakthe shading applied to the 3D model. Some or all of the statisticalinformation received by the server 104 may be used to modify the one ormore parameters of the 3D object data model at block 212 in method 200.In one example, the color parameter of the 3D object data model (i.e.,the smartphone) is manually changed via the input source 102 and themodified 3D object data model is sent to the object data model processor110 in the server 104 to generate a rendering of the 3D object datamodel. Alternatively, the color parameter, or any other parameter may beautomatically modified based on the statistical information using dataprocessor 110, for example.

FIGS. 3A-3D conceptually illustrate examples of receiving a 3D objectdata model of an object, comparing the 3D object data model to multiplereference images of the object, modifying parameters of the 3D objectdata model that define rendering features for data points on the 3Dobject data model, and rendering the 3D object data model to match anappearance of the object in one or more of the multiple referenceimages. FIG. 3A illustrates a 3D object data model of a smartphone. The3D object data model includes parameters defining rendering features fordata points of the 3D object data model. For example, parameters mayinclude environment, lighting, or material.

FIG. 3B illustrates multiple reference images of the smartphone. Asshown each of the reference images, 300-304, depict the smartphone withvarying attributes of content. For example, smartphone 300 includes afront view of the smartphone in white, while smartphone 302 depicts theback of the smartphone. Smartphone 304 depicts the smartphone in blackwith a light-enhanced screen being held by a hand and tilted. In thesefigures, for example, a lighting attribute, which can be used to definethe lighting parameter of the 3D object data model, is varied. Otherattributes may also be varied.

FIG. 3C illustrates examples of various renderings of the 3D object datamodel (the smartphone). The renderings are may be viewed in a 3D objectdata model viewer at the output target 108, for example. As shown, eachof the renderings is based on the comparison to the reference images.For example, rendering 308 is of the smartphone tilted, with whitepaint, with a light-enhanced screen, incorporating, for example, thecolor attribute as shown in reference image 300, and the lightingattribute as shown in reference image 304 in FIG. 3B. The variousrenderings of the 3D object data model may include all or some of thereference figure attributes.

FIG. 3D illustrates an example of a rendering, in a 3D object data modelviewer or a HTML web page, for example, of the 3D object data model thathas been further adjusted based on statistical information. As shown,the rendered smartphone 310 does not show the smartphone in white asdepicted in rendered smartphone 308 (shown in FIG. 3C) because thestatistical information received by the server 104—received in anymanner discussed with reference to step 210 in method 200, forexample—indicated a preference for a smartphone in black, for example.

FIG. 4 is a functional block diagram illustrating an example computingdevice used in a computing system that is arranged in accordance with atleast some embodiments described herein. The computing device may be apersonal computer, mobile device, cellular phone, touch-sensitivewristwatch, tablet computer, video game system, or global positioningsystem, and may be implemented to provide a system for interacting with3D object data models as described in FIGS. 1-3. In a basicconfiguration 402, computing device 400 may typically include one ormore processors 410 and system memory 420. A memory bus 430 can be usedfor communicating between the processor 410 and the system memory 420.Depending on the desired configuration, processor 410 can be of any typeincluding but not limited to a microprocessor (μP), a microcontroller(μC), a digital signal processor (DSP), or any combination thereof. Amemory controller 415 can also be used with the processor 410, or insome implementations, the memory controller 415 can be an internal partof the processor 410.

Depending on the desired configuration, the system memory 420 can be ofany type including but not limited to volatile memory (such as RAM),non-volatile memory (such as ROM, flash memory, etc.) or any combinationthereof. System memory 420 may include one or more applications 422, andprogram data 424. Application 422 may include an index algorithm 423that is arranged to provide inputs to the electronic circuits, inaccordance with the present disclosure. Program data 424 may includecontent information 425 that could be directed to any number of types ofdata. In some example embodiments, application 422 can be arranged tooperate with program data 424 on an operating system.

Computing device 400 can have additional features or functionality, andadditional interfaces to facilitate communications between the basicconfiguration 402 and any devices and interfaces. For example, datastorage devices 440 can be provided including removable storage devices442, non-removable storage devices 444, or a combination thereof.Examples of removable storage and non-removable storage devices includemagnetic disk devices such as flexible disk drives and hard-disk drives(HDD), optical disk drives such as compact disk (CD) drives or digitalversatile disk (DVD) drives, solid state drives (SSD), and tape drivesto name a few. Computer storage media can include volatile andnonvolatile, non-transitory, removable and non-removable mediaimplemented in any method or technology for storage of information, suchas computer readable instructions, data structures, program modules, orother data.

System memory 420 and storage devices 440 are examples of computerstorage media. Computer storage media includes, but is not limited to,RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM,digital versatile disks (DVD) or other optical storage, magneticcassettes, magnetic tape, magnetic disk storage or other magneticstorage devices, or any other medium which can be used to store thedesired information and which can be accessed by computing device 400.Any such computer storage media can be part of device 400.

Computing device 400 can also include output interfaces 450 that mayinclude a graphics processing unit 452, which can be configured tocommunicate to various external devices such as display devices 490 orspeakers via one or more A/V ports or a communication interface 470. Thecommunication interface 470 may include a network controller 472, whichcan be arranged to facilitate communications with one or more othercomputing devices 480 over a network communication via one or morecommunication ports 474. The communication connection is one example ofa communication media. Communication media may be embodied by computerreadable instructions, data structures, program modules, or other datain a modulated data signal, such as a carrier wave or other transportmechanism, and includes any information delivery media. A modulated datasignal can be a signal that has one or more of its characteristics setor changed in such a manner as to encode information in the signal. Byway of example, and not limitation, communication media can includewired media such as a wired network or direct-wired connection, andwireless media such as acoustic, radio frequency (RF), infrared (IR) andother wireless media.

Computing device 400 can be implemented as a portion of a small-formfactor portable (or mobile) electronic device such as a cell phone, apersonal data assistant (PDA), a personal media player device, awireless web-watch device, a personal headset device, an applicationspecific device, or a hybrid device that include any of the abovefunctions. Computing device 400 can also be implemented as a personalcomputer including both laptop computer and non-laptop computerconfigurations.

In some embodiments, the disclosed methods may be implemented ascomputer program instructions encoded on a non-transitorycomputer-readable storage media in a machine-readable format, or onother non-transitory media or articles of manufacture. FIG. 5 is aschematic illustrating a conceptual partial view of an example computerprogram product that includes a computer program for executing acomputer process on a computing device, arranged according to at leastsome embodiments presented herein.

In one embodiment, the example computer program product 500 is providedusing a signal bearing medium 501. The signal bearing medium 501 mayinclude one or more programming instructions 502 that, when executed byone or more processors may provide functionality or portions of thefunctionality described above with respect to FIGS. 1-3. In someexamples, the signal bearing medium 501 may encompass acomputer-readable medium 503, such as, but not limited to, a hard diskdrive, a Compact Disc (CD), a Digital Video Disk (DVD), a digital tape,memory, etc. In some implementations, the signal bearing medium 501 mayencompass a computer recordable medium 504, such as, but not limited to,memory, read/write (R/W) CDs, R/W DVDs, etc. In some implementations,the signal bearing medium 501 may encompass a communications medium 505,such as, but not limited to, a digital and/or an analog communicationmedium (e.g., a fiber optic cable, a waveguide, a wired communicationslink, a wireless communication link, etc.). Thus, for example, thesignal bearing medium 501 may be conveyed by a wireless form of thecommunications medium 505 (e.g., a wireless communications mediumconforming with the IEEE 802.11 standard or other transmissionprotocol).

The one or more programming instructions 502 may be, for example,computer executable and/or logic implemented instructions. In someexamples, a computing device such as the computing device 400 of FIG. 4may be configured to provide various operations, functions, or actionsin response to the programming instructions 502 conveyed to thecomputing device 500 by one or more of the computer readable medium 503,the computer recordable medium 504, and/or the communications medium505.

It should be understood that arrangements described herein are forpurposes of example only. As such, those skilled in the art willappreciate that other arrangements and other elements (e.g. machines,interfaces, functions, orders, and groupings of functions, etc.) can beused instead, and some elements may be omitted altogether according tothe desired results. Further, many of the elements that are describedare functional entities that may be implemented as discrete ordistributed components or in conjunction with other components, in anysuitable combination and location.

While various aspects and embodiments have been disclosed herein, otheraspects and embodiments will be apparent to those skilled in the art.The various aspects and embodiments disclosed herein are for purposes ofillustration and are not intended to be limiting, with the true scopebeing indicated by the following claims, along with the full scope ofequivalents to which such claims are entitled. It is also to beunderstood that the terminology used herein is for the purpose ofdescribing particular embodiments only, and is not intended to belimiting.

What is claimed is:
 1. A method comprising: receiving, by one or moreprocessors, a three-dimensional (3D) object data model of an object inan environment, wherein the 3D object data model of the object ischaracterized by parameters defining rendering features for data pointsof the 3D object data model; receiving, by the one or more processors,multiple reference images depicting other distinct occurrences of theobject in a different environment, wherein each of the multiplereference images depicting the other distinct occurrences of the objectincludes at least one attribute of content associated with the objectdifferent from attributes of content of the other reference images;making a comparison, by the one or more processors, of a first renderingof the 3D object data model to the multiple reference images of theother occurrences of the object; based on the comparison, making aplurality of respective different modifications, by the one or moreprocessors, to one or more of the parameters of the 3D object datamodel, each modification being based on least one attribute of contentfrom the multiple reference images so as to produce a distinctappearance of a respective secondary rendering of the 3D object datamodel; rendering, by the one or more processors, the 3D object datamodel based on the plurality of respective different modifications so asto generate a plurality of different secondary renderings of the 3Dobject data model that correspond to respective modifications of theplurality of respective different modifications and that depict theobject in a configuration incorporating at least one attribute ofcontent from the multiple reference images of the object; receiving, bythe one or more processors, statistical information indicative ofwhether the plurality of different secondary renderings of the 3D objectdata model are satisfactory, wherein the statistical information isbased on feedback associated with an observation of the plurality ofdifferent secondary renderings of the 3D object data model; and based onthe statistical information indicating that a given secondary renderingof the plurality of different secondary renderings of the 3D object datamodel is satisfactory, the one or more processors (i) making asubsequent modification to one or more of the parameters of the 3Dobject data model, and (ii) rendering the 3D object data model based onthe subsequent modification so as to generate a subsequent renderingthat includes at least a portion of parameters of the 3D object datamodel as rendered in the given secondary rendering.
 2. The method ofclaim 1, further comprising: providing the plurality of differentsecondary renderings of the 3D object data model for display within anelectronic document, wherein the plurality of different secondaryrenderings are displayed juxtaposed to one another, and whereinreceiving the statistical information comprises receiving informationassociated with each of the plurality of different secondary renderingsthat is indicative of a number of selections of the secondary renderingwithin the electronic document.
 3. The method of claim 1, wherein the 3Dobject data model is based on a compilation of scans of the object inthe environment, and wherein making the plurality of respectivedifferent modifications, each modification being based on the at leastone attribute of content from the multiple reference images so as toproduce the distinct appearance of the respective secondary rendering ofthe 3D object data model comprises making at least one modification soas to produce a distinct appearance of at least one respective secondaryrendering of the 3D object data model that matches an actual appearanceof the scanned object in the environment.
 4. The method of claim 1,wherein making the plurality of respective different modifications, eachmodification being based on the at least one attribute of content fromthe multiple reference images so as to produce the distinct appearanceof the respective secondary rendering of the 3D object data modelcomprises making at least one modification so as to produce a distinctappearance of at least one respective secondary rendering of the 3Dobject data model that matches a given appearance of a given objectdepicted in a respective reference image of the multiple referenceimages.
 5. The method of claim 1, wherein making the subsequentmodification to one or more of the parameters of the 3D object datamodel comprises making the subsequent modification to one or more of theparameters of the 3D object data model so as to produce an appearance ofthe subsequent rendering that illustrates edits that modify an actualappearance of the object in the environment.
 6. The method of claim 1,wherein rendering the 3D object data model based on the plurality ofrespective different modifications so as to generate the plurality ofdifferent secondary renderings comprises rendering the 3D object datamodel so as to generate the plurality of different secondary renderingsfor display on an electronic device.
 7. The method of claim 1, whereinthe rendering features for data points of the 3D object data modelinclude a material of the object in the environment, wherein the atleast one attribute of content associated with the object depicted ineach of the multiple reference images includes a material of the objectdepicted in each of the multiple reference images, and wherein makingthe plurality of respective different modifications to one or more ofthe parameters of the 3D object data model comprises making theplurality of respective different modifications based at least in parton the material of the object depicted in each of the multiple referenceimages.
 8. The method of claim 1, wherein the rendering features fordata points of the 3D object data model include at least one color ofthe object in the environment, wherein the at least one attribute ofcontent associated with the object depicted in each of the multiplereference images includes at least one color of the object depicted ineach of the multiple reference images, and wherein making the pluralityof respective different modifications to one or more of the parametersof the 3D object data model comprises making the plurality of respectivedifferent modifications based at least in part on the at least one colorof the object depicted in each of the multiple reference images.
 9. Themethod of claim 1, wherein the rendering features for data points of the3D object data model include a lighting of the object in theenvironment, wherein the at least one attribute of content associatedwith the object depicted in each of the multiple reference imagesincludes a lighting of the object depicted in each of the multiplereference images, and wherein making the plurality of respectivedifferent modifications to one or more of the parameters of the 3Dobject data model comprises making the plurality of respective differentmodifications based at least in part on the lighting of the objectdepicted in each of the multiple reference images.
 10. A systemcomprising: a non-transitory computer-readable medium; and programinstructions stored on the non-transitory computer-readable mediumexecutable by one or more computing devices to perform the functions of:receiving a three-dimensional (3D) object data model of an object in anenvironment, wherein the 3D object data model of the object ischaracterized by parameters defining rendering features for data pointsof the 3D object data model; receiving multiple reference imagesdepicting other distinct occurrences of the object in a differentenvironment, wherein each of the multiple reference images depicting theother distinct occurrences of the object includes at least one attributeof content associated with the object different from attributes ofcontent of the other reference images; making a comparison of a firstrendering of the 3D object data model to the multiple reference imagesof the other occurrences of the object; based on the comparison, makinga plurality of respective different modifications to one or more of theparameters of the 3D object data model, each modification being based onat least one attribute of content from the multiple reference images soas to produce a distinct appearance of a respective secondary renderingof the 3D object data model; rendering the 3D object data model based onthe plurality of respective different modifications so as to generate aplurality of different secondary renderings of the 3D object data modelthat correspond to respective modifications of the plurality ofrespective different modifications and that depict the object in aconfiguration incorporating at least one attribute of content from themultiple reference images of the object; receiving statisticalinformation indicative of whether the plurality of different secondaryrenderings of the 3D object data model are satisfactory, wherein thestatistical information is based on feedback associated with anobservation of the plurality of different secondary renderings of the 3Dobject data model; and based on the statistical information indicatingthat a given secondary rendering of the plurality of different secondaryrenderings of the 3D object data model is satisfactory, (i) making asubsequent modification to one or more of the parameters of the 3Dobject data model, and (ii) rendering the 3D object data model based onthe subsequent modification so as to generate a subsequent renderingthat includes at least a portion of parameters of the 3D object datamodel as rendered in the given secondary rendering.
 11. The system ofclaim 10, wherein the rendering features for data points of the 3Dobject data model include one or more of a material attribute, a colorof the material attribute, a texture, and a background, and wherein theat least one attribute of content associated with the object depicted ineach of the multiple reference images includes one or more of a materialof the object depicted in each of the multiple reference images, a colorof the material of the object depicted in each of the multiple referenceimages, a texture of the object depicted in each of the multiplereference images, and a background behind the object in the image inwhich the object is depicted.
 12. The system of claim 10, whereinrendering the 3D object data model based on the plurality of respectivedifferent modifications so as to generate the plurality of differentsecondary renderings comprises: rendering the 3D object data modelwithin an electronic document for display, and providing the pluralityof different secondary renderings of the 3D object data model fordisplay within the electronic document, wherein the plurality ofdifferent secondary renderings are displayed juxtaposed to one another,wherein receiving the statistical information comprises one or more ofreceiving information associated with each of the plurality of differentsecondary renderings that is indicative of a number of selections of thesecondary rendering within the electronic document, and receivinginformation associated with each of the plurality of different secondaryrenderings that is indicative of whether the secondary rendering issatisfactory.
 13. The system of claim 10, wherein the 3D object datamodel is based on a compilation of scans of the object in theenvironment, and wherein making the plurality of respective differentmodifications, each modification being based on the at least oneattribute of content from the multiple reference images so as to producethe distinct appearance of the respective secondary rendering of the 3Dobject data model comprises one or more of: making at least onemodification so as to produce a distinct appearance of at least onerespective secondary rendering of the 3D object data model that matchesan actual appearance of the scanned object in the environment, andmaking at least one modification so as to produce a distinct appearanceof at least one respective secondary rendering of the 3D object datamodel that matches a given appearance of a given object depicted in arespective reference image of the multiple reference images.
 14. Thesystem of claim 10, wherein making the subsequent modification to one ormore of the parameters of the 3D object data model comprises making thesubsequent modification to one or more of the parameters of the 3Dobject data model so as to produce an appearance of the subsequentrendering that illustrates edits that modify an actual appearance of theobject in the environment.
 15. The system of claim 10, wherein renderingthe 3D object data model based on the plurality of respective differentmodifications so as to generate the plurality of different secondaryrenderings comprises rendering the 3D object data model so as togenerate the plurality of different secondary renderings for display onan electronic device.
 16. A non-transitory computer-readable mediumhaving stored therein program instructions executable by one or morecomputing devices to cause the one or more computing devices to performfunctions comprising: receiving a three-dimensional (3D) object datamodel of an object in an environment, wherein the 3D object data modelof the object is characterized by parameters defining rendering featuresfor data points of the 3D object data model; receiving multiplereference images depicting other distinct occurrences of the object in adifferent environment, wherein each of the multiple reference imagesdepicting the other distinct occurrences of the object includes at leastone attribute of content associated with the object different fromattributes of content of the other reference images; making a comparisonof a first rendering of the 3D object data model to the multiplereference images of the other occurrences of the object; based on thecomparison, making a plurality of respective different modifications toone or more of the parameters of the 3D object data model, eachmodification being based on at least one attribute of content from themultiple reference images so as to produce a distinct appearance of arespective secondary rendering of the 3D object data model; renderingthe 3D object data model based on the plurality of respective differentmodifications so as to generate a plurality of different secondaryrenderings of the 3D object data model that correspond to respectivemodifications of the plurality of respective different modifications andthat depict the object in a configuration incorporating at least oneattribute of content from the multiple reference images of the object;receiving statistical information indicative of whether the plurality ofdifferent secondary renderings of the 3D object data model aresatisfactory, wherein the statistical information is based on feedbackassociated with an observation of the plurality of different secondaryrenderings of the 3D object data model; and based on the statisticalinformation indicating that a given secondary rendering of the pluralityof different secondary renderings of the 3D object data model issatisfactory, (i) making a subsequent modification to one or more of theparameters of the 3D object data model, and (ii) rendering the 3D objectdata model based on the subsequent modification so as to generate asubsequent rendering that includes at least a portion of parameters ofthe 3D object data model as rendered in the given secondary rendering.17. The non-transitory computer readable medium of claim 16, wherein therendering features for data points of the 3D object data model includeone or more of a material attribute, a shading, a lighting, a color, atexture, and a background.
 18. The non-transitory computer readablemedium of claim 16, wherein the program instructions are furtherexecutable by the one or more computing devices to cause the one or morecomputing devices to perform functions comprising: rendering the 3Dobject data model within an electronic document for display, andproviding the plurality of different secondary renderings of the 3Dobject data model for display within the electronic document, whereinthe plurality of different secondary renderings are displayed juxtaposedto one another, wherein the one or more computing devices, whenreceiving the statistical information comprises one or more of receivinginformation associated with each of the plurality of different secondaryrenderings that is indicative of a number of selections of the secondaryrendering within the electronic document, and information associatedwith each of the plurality of different secondary renderings that isindicative of whether the secondary rendering is satisfactory.
 19. Thenon-transitory computer readable medium of claim 16, wherein: the 3Dobject data model is based on a compilation of scans of the object inthe environment; and the program instructions are further executable bythe one or more computing devices to cause the one or more computingdevices to perform functions comprising: making at least onemodification to one or more of the parameters of the 3D object datamodel so as to produce a distinct appearance of at least one respectivesecondary rendering of the 3D object data model that matches an actualappearance of the scanned object in the environment, and making at leastone modification to one or more of the parameters of the 3D object datamodel so as to produce a distinct appearance of at least one respectivesecondary rendering of the 3D object data model that matches a givenappearance of a given object depicted in a respective reference image ofthe multiple reference images.
 20. The non-transitory computer readablemedium of claim 16, wherein the program instructions are furtherexecutable by the one or more computing devices to cause the one or morecomputing devices to perform functions comprising: making the subsequentmodification to one or more of the parameters of the 3D object datamodel so as to produce an appearance of the subsequent rendering thatillustrates edits that modify an actual appearance of the object in theenvironment.